/*
 * Copyright (c) zhg2yqq.com Corp.
 * All Rights Reserved.
 */
package com.zhg2yqq.wheels.security;

import java.util.Collection;
import java.util.Collections;
import java.util.Map;

import com.zhg2yqq.wheels.security.context.SecurityLoginUser;
import com.zhg2yqq.wheels.security.multi.NormalAuthenticationTokenHandler;

/**
 * 权限需要外部实现的接口
 *
 * @author zhg2yqq, 2022年11月28日
 * @version zhg2yqq v1.0
 */
public interface ISecurityService {
    /**
     * 通过用户名获取信息
     *
     * @param username 用户名
     * @return {@link SecurityLoginUser}
     */
    SecurityLoginUser getLoginUserByName(String username);

//    /**
//     * @return 默认返回空，key：url Ant，value：k:method, v:角色
//     */
//    default Map<String, Map<String, List<String>>> listAllNeedAuthenticationUrls() {
//        return Collections.emptyMap();
//    }

    /**
     * @return 默认返回空，key：权限code，value：method
     */
    default Map<String, String> listUserPermissions(String userId) {
        return Collections.emptyMap();
    }

    /**
     * 获取允许的认证方式，NOMRAL普通账号密码登录，CODE验证码登录，EMAIL邮箱登录，PHONE手机号登录
     *
     * @return
     */
    default Collection<String> allowTypes() {
        return Collections.singletonList(NormalAuthenticationTokenHandler.TYPE);
    }
}
